#pragma once

#include <memory>
#include <vector>

#include "planner/rule.h"

namespace optimizer {

/**
 * Rule transforms Logical Scan -> Sequential Scan
 */
class LogicalGetToPhysicalSeqScan : public Rule {
 public:
  LogicalGetToPhysicalSeqScan();

  bool Check(std::shared_ptr<Operator> plan, OptimizationContext *context) const override;

  void Transform(std::shared_ptr<Operator> input, std::vector<std::shared_ptr<Operator>> &transformed,
                 OptimizationContext *context) const override;
};

}  // namespace optimizer
